package jp.co.libgate.controller;

import jp.co.libgate.common.exception.AlreadyPayedIdException;
import jp.co.libgate.common.exception.NoIdException;
import jp.co.libgate.common.exception.NoMailException;
import jp.co.libgate.model.RegistUser;
import jp.co.libgate.service.UserService;

import org.slim3.controller.Navigation;
import org.slim3.util.RequestMap;

import java.util.HashMap;
import java.util.Map;
import java.util.logging.Logger;

public class RegistController extends JsonController {
    private static final Logger log = Logger.getLogger(RegistController.class.getName());

    private UserService service = new UserService();

    /**
     * メールアドレスを受け取り、keyを返却する
     * メアドが登録されていない場合、IDがすでに利用されている場合はエラー
     */
    @Override
    public Navigation run() throws Exception {
        RegistUser user = null;
        try{
            //メアドから端末登録をする
            user = service.regist(new RequestMap(request));
            Map<String,String> msg = new HashMap<String,String>();
            msg.put("result","true");
            msg.put("id",String.valueOf((user.getKey().getId())));
            msg.put("name",user.getName());
            msg.put("email",user.getEmail());
            json(msg);

        //メールアドレスが間違っている
        }catch(NoMailException e){
            Map<String,String> msg = new HashMap<String,String>();
            msg.put("result","false");
            msg.put("msg","メールアドレスが登録されていません");
            json(msg);

        //ここは通常ルートだから来ないはず
        }catch(NoIdException e){
            Map<String,String> msg = new HashMap<String,String>();
            msg.put("result","false");
            msg.put("msg","IDが登録されていません");
            json(msg);

        //メールアドレス登録済み
        }catch(AlreadyPayedIdException e){
            Map<String,String> msg = new HashMap<String,String>();
            msg.put("result","false");
            msg.put("msg","そのメールアドレスはすでに登録されています");
            json(msg);

        }

        return null;
    }
}
